package everydayone.numberOfSubArrays;
/**
 * @Date 2020/04/20
 * @author 王光浩
 * @Thinking 使用双指针
 */
public class MyMethodone {
	public int numberOfSubarrays(int[] nums, int k) {
		if( nums==null || nums.length==0 ) return 0;
		int ret = 0;
		int left = 0;
		int right = 0;
		int leftCount = 0;
		int rightCount = 0;
		int oddCount = 0;
		while( right<nums.length || oddCount>=k) {
			leftCount = 1;
			//统计从 left 下标元素开始，到下一个 值为奇数 的元素总个数
			while( left<nums.length && nums[left]%2==0 ) {
				left++;
				leftCount++;
			}
			//如果不知道如何写，可以先写成 for 循环，然后再转化为 while 循环
			rightCount = 0;
			while( right<nums.length ) {
				if( nums[right]%2!=0 ) oddCount++;
				if( oddCount==k ) rightCount++;
				if( oddCount>k )break;
				right++;
			}
			//将特殊情况的特征写全
			if( oddCount==k && rightCount==0 ) rightCount=1;
			if(oddCount>k) oddCount--;
			ret += rightCount*leftCount;
			left++;
			oddCount--;
		}
		return ret;
	}
}
